﻿using System;
using System.Collections.Generic;
using System.Windows.Forms;
using Onshi.POS.Comun;
using Onshi.POS.Comun.Vistas;
using Onshi.POS.Formularios.Recursos;
using Onshi.POS.Modelo.Entidades;
using Onshi.POS.Modelo.Enumeradores;
using Onshi.POS.Modelo.Objetos;

namespace Onshi.POS.Formularios.Cliente
{
    public partial class TelefonosVer : FormularioBase, ITelefonosVer
    {
        #region Constructores

        public TelefonosVer(EnumTipoEntidad tipoEntidad, Int32 idEntidad)
        {
            InitializeComponent();
            this.idEntidad = idEntidad;
            this.tipoEntidad = tipoEntidad;
            presentador = new TelefonosVerPresentador(this);
        }

        #endregion

        #region Atributos

        private Int32 idEntidad;
        private EnumTipoEntidad tipoEntidad;
        private TelefonosVerPresentador presentador;

        #endregion

        #region Propiedades

        public EnumTipoEntidad TipoEntidad
        {
            get { return tipoEntidad; }
        }

        public String CodigoAreaFiltro
        {
            get { return mskCodigoAreaFiltro.Text; }
        }

        public String NumeroFiltro
        {
            get { return mskNumeroFiltro.Text; }
        }

        public Byte IdTipoTelefonoFiltro
        {
            get { return (Byte)cboTipoTelefonoFiltro.SelectedValue; }
        }

        public List<Telefono> Lista
        {
            set { bsTelefonos.DataSource = value; }
        }

        public String NombreEntidad
        {
            set { txtNombre.Text = value; }
        }

        public Int32 IdEntidad
        {
            get { return idEntidad; }
        }

        public EnumEstadoCheck TieneObservacionFiltro
        {
            get
            {
                var valor = EnumEstadoCheck.TODOS;
                switch (chkTieneObservacion.CheckState)
                {
                    case CheckState.Checked:
                        valor = EnumEstadoCheck.SI;
                        break;
                    case CheckState.Indeterminate:
                        valor = EnumEstadoCheck.TODOS;
                        break;
                    case CheckState.Unchecked:
                        valor = EnumEstadoCheck.NO;
                        break;
                }
                return valor;
            }
        }

        #endregion

        #region Eventos

        private void grdTelefonos_CellFormatting(Object sender, DataGridViewCellFormattingEventArgs e)
        {
            if (e.ColumnIndex == colTelefonoObservacion.Index)
            {
                if (((Telefono)bsTelefonos.List[e.RowIndex]).TieneObservacion)
                    e.Value = Properties.Resources.page_copy;
            }
        }

        private void TelefonosVer_Load(Object sender, EventArgs e)
        {
            try
            {
                cboTipoTelefonoFiltro.ActualizarListado();
                presentador.Inicializar();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, DatosComunes.NombreAplicacion, MessageBoxButtons.OK, MessageBoxIcon.Information);       
            }
        }

        private void chkTieneObservacionFiltro_CheckStateChanged(Object sender, EventArgs e)
        {
            try
            {
                presentador.Filtrar();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, DatosComunes.NombreAplicacion, MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
        }

        private void btnSalir_Click(Object sender, EventArgs e)
        {
            Close();
        }

        private void mskCodigoAreaFiltro_TextChanged(Object sender, EventArgs e)
        {
            try
            {
                presentador.Filtrar();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, DatosComunes.NombreAplicacion, MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
        }

        private void mskNumeroFiltro_TextChanged(Object sender, EventArgs e)
        {
            try
            {
                presentador.Filtrar();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, DatosComunes.NombreAplicacion, MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
        }

        private void cboTipoTelefonoFiltro_SelectedIndexChanged(Object sender, EventArgs e)
        {
            try
            {
                presentador.Filtrar();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, DatosComunes.NombreAplicacion, MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
        }

        private void btnVerObservacion_Click(Object sender, EventArgs e)
        {
            if (bsTelefonos.Current != null)
            {
                var telefono = ((Telefono)bsTelefonos.Current);
                if (telefono.TieneObservacion)
                {
                    var observacionVer = new ObservacionVer(EnumTipoEntidad.TELEFONO_VENDEDOR, telefono.ToString(), telefono.Observacion);
                    observacionVer.ShowDialog();
                }
            }
        }

        private void grdTelefonos_CellContentClick(Object sender, DataGridViewCellEventArgs e)
        {
            if (e.RowIndex != -1)
            {
                if (grdTelefonos.Columns[e.ColumnIndex].Name == colTelefonoObservacion.Name)
                {
                    var telefono = ((Telefono)bsTelefonos.List[e.RowIndex]);
                    var observacionVer = new ObservacionVer(EnumTipoEntidad.TELEFONO_VENDEDOR, telefono.ToString(), telefono.Observacion);
                    observacionVer.ShowDialog();
                }
            }
        }

        #endregion
    }
}